% Created 2023-02-27 周一 08:49
% Intended LaTeX compiler: xelatex
\documentclass[a4paper]{article}
                 \usepackage{graphicx}
                 \usepackage{xcolor}
                 \usepackage{xeCJK}
                 \usepackage{fixltx2e}
                 \usepackage{longtable}
                 \usepackage{float}        
                 \usepackage{tikz}         
                 \usepackage{wrapfig}      
                 \usepackage{latexsym,amssymb,amsmath}
                 \usepackage{textcomp}
                 \usepackage{bicaption}
                 \usepackage{listings}     
                \usepackage{marvosym}     
                \usepackage{textcomp}     
                \usepackage{latexsym}     
                \usepackage{natbib}
                \usepackage{indentfirst}
		\usepackage{hyperref}
                \usepackage{geometry}
                \usepackage{minted}
                \usepackage{algpseudocode}
		\usepackage{algorithm}
                \usepackage{algorithmicx}
                \setCJKmainfont{仿宋}
                \setCJKsansfont{Microsoft YaHei}
                \setCJKmonofont{Microsoft YaHei}
                \setlength{\parindent}{2em}
                \usepackage{color}
                \usepackage{fancyhdr}
\pagestyle{fancy}
\fancyhead[R]{\footnotesize{《Android应用程序开发》 广西职业师范学院实验教学指导书}}
\geometry{a4paper,left=2.5cm,right=2.5cm,top=2cm,bottom=2cm}
\setCJKmainfont{Microsoft YaHei}
\setCJKsansfont{Microsoft YaHei}
\setCJKmonofont{Microsoft YaHei}

            \lstset{
  columns=fixed,       
  breaklines=true, breakautoindent=true,breakindent=4em,
  commentstyle=\it\color[RGB]{0,96,96},                %
  stringstyle=\rmfamily\slshape\color[RGB]{128,0,0},   %
  showstringspaces=false,                              %
  language=java,                                        %
}

\usemintedstyle{emacs}
    \setminted{%
        autogobble,% automatically remove the spaces to the left of the code
        linenos=true,% show line numbers
        fontsize=\small,% smaller font size
        % escapeinside=@@,% insert latex code between @ and @
        frame=lines,% frame styles: none or lines
        % frame=none,
        numbers=none,% show line numbers on: left, right, both or none
        mathescape=true,% insert math code
	breaklines=true,
    }%
    \setmintedinline{%
        fontsize=\smallsize,
    }%
\date{\today}
\title{实验一：环境配置实验}
\hypersetup{
 pdfauthor={},
 pdftitle={实验一：环境配置实验},
 pdfkeywords={},
 pdfsubject={},
 pdfcreator={Emacs 27.1 (Org mode 9.3.8)}, 
 pdflang={English}}
\begin{document}

\maketitle
\tableofcontents

\newpage

\section{实验目的}
\label{sec:org6640d14}
\begin{itemize}
\item 掌握 Android Studio 的安装与运行
\end{itemize}
\section{实验设备和器件}
\label{sec:orgf52e5c2}
\begin{itemize}
\item PC
\item 内存要求 8G 以上
\end{itemize}
\section{实验内容}
\label{sec:org0fc1133}
\subsection{Android Studio 离线安装}
\label{sec:org20935ad}
\begin{enumerate}
\item 离线压缩包准备
\label{sec:orgee9f965}
如果要在离线环境下使用开源工程，将该工程也在AS下编译。有可能会下载不
同版本的gradle，以及其他依赖库，这些都会缓存到 \texttt{\%USER\_HOME\%/.gradle下} ，不同版本的sdkTool，会缓存的sdk目录下，编译下载时间会比较长。
将Android SDK目录压缩打包，zip rar tar.gz\ldots{},都可以，主要是方便拷贝，文件太多
同理将
\begin{verbatim}
C:\\users[username].gradle 
\end{verbatim}
目录打包
离线安装的3种资源准备完毕，并拷贝到离线主机上,所需要的4个压缩包为:
\begin{itemize}
\item Android Studio压缩包
\item Android SDK压缩包
\item .gradle 压缩包
\end{itemize}
\item 安装Android studio主程序
\label{sec:org89e2930}
将Android studio解压到某个盘符即可，建议 F 盘，避免在系统盘，机房
的系统盘有还原程序控制，重启后恢复原样。
\item 安装Android sdk
\label{sec:orgd6e2aa3}
解压android-sdk压缩包到某个盘，并在Android Studio中指向Android Sdk的位置,
\lstset{language=c++,label= ,caption= ,captionpos=b,numbers=none}
\begin{lstlisting}
//配置选项
file > Appearance & Behavior > System settings > Android SDK
\end{lstlisting}
\item 配置gradle缓存
\label{sec:orgff946ac}
将.gradle压缩包解压到某个盘符目录下例如 F 盘。

\item 创建简单项目验证是否能成功编译
\label{sec:orgdeee221}

\item 配置缓存目录
\label{sec:orgca83805}
默认情况下，android studio会在C盘路径下生成几个专门的缓存路径，非常占用空间，
由于实验室机房都配备有还原系统，每次重启机器会将C:盘重置，因此请参照 \href{https://blog.csdn.net/qq\_38263083/article/details/83056538}{配置AndroidStudio的默认目录} 
修改默认路径到其他盘符，比如e盘或d盘。 Android Studio安装好以后会在系统盘用户目录下产生这么几个文件夹：
\begin{itemize}
\item .android: 文件夹是 Android SDK生成的AVD（Android Virtual Device
Manager）即模拟器存放路径
\item .AndroidStudio 这个文件夹是Android Studio的配置文件夹，主要存放一些
AndroidStudio设置和插件和项目的缓存信息
\item .gradle 这个文件夹是构建工具 Gradle的配置文件夹，也会存储一些项目的
构建缓存信息
\end{itemize}
\item AndroidStudio 文件夹的修改
\label{sec:org829cc14}
进入Android Studio的安装目录，进入bin文件夹，用文本编辑软件打开idea.properties，去掉以下两项的注释符号\#，修改对应的路径为新路径即可。
\lstset{language=shell,label= ,caption= ,captionpos=b,numbers=none}
\begin{lstlisting}
idea.config.path=f:/AndroidStudioSetup/.AndroidStudio3.0/config
idea.system.path=f:/AndroidStudioSetup/.AndroidStudio3.0/system
\end{lstlisting}
\item grable 文件夹的修改
\label{sec:org81ef422}
进入 AndroidStudio 配置选项修改
\begin{center}
\includegraphics[width=0.8\textwidth]{img/2020-09-29_22-29-45.jpg}
\end{center}

\item .android 文件夹的修改
\label{sec:org9b44446}
这个文件夹是由Android SDK配置模拟器生成的，也是最占空间的一个。
首先，需要添加一个系统的环境变量ANDROID\_SDK\_HOME，如下图：
\begin{center}
\includegraphics[width=0.5\textwidth]{img/2020-09-29_22-31-28.jpg}
\end{center}
添加好环境变量后到新的路径下修改下相应的.ini文件内的路径信息，然后重启系统生效。
\begin{center}
\includegraphics[width=0.5\textwidth]{img/2020-09-29_22-32-09.jpg}
\end{center}
由于机房系统被保护，因此在每次机房实验时要做更改才能生效。
\end{enumerate}

\subsection{验证你的第一个程序}
\label{sec:org05f4e45}
\begin{itemize}
\item 新建一个android程序，并在AVD调试运行
\item 修改程序，打开activity\_main.xml，添加TextView组件，在手机的正中央显示“HelloWorld [你的姓名]”
\item 添加ImageView组件，并在"HelloWorld [你的姓名]"底下显示一张你喜欢的图片
\end{itemize}

\section{思考与扩展}
\label{sec:org4ad72b2}
\subsection{gradle使用说明}
\label{sec:orgacbda8f}
\begin{enumerate}
\item gradle 是什么
\label{sec:org2e096f1}
Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化构建开源工
具。它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置，目前也增
加了基于Kotlin语言的kotlin-based DSL，抛弃了基于XML的各种繁琐配置。
Gradle是一个基于JVM的构建工具，是一款通用灵活的构建工具，支持maven，
Ivy仓库，支持传递性依赖管理，而不需要远程仓库或者是pom.xml和ivy.xml
配置文件，基于Groovy，build脚本使用Groovy编写。
\begin{itemize}
\item gradle对多工程的构建支持很出色，工程依赖是gradle的第一功能。
\item gradle支持局部构建。
\end{itemize}
　　+ 支持多方式依赖管理：包括从maven远程仓库、nexus私服、ivy仓库以及本地文件系统的jars或者dirs
\begin{itemize}
\item gradle是第一个构建集成工具，与ant、maven、ivy有良好的相容相关性。
轻松迁移：gradle适用于任何结构的工程，你可以在同一个开发平台平行
构建原工程和gradle工程。通常要求写相关测试，以保证开发的插件的相
似性，这种迁移可以减少破坏性，尽可能的可靠。这也是重构的最佳实践。
\item gradle的整体设计是以作为一种语言为导向的，而非成为一个严格死板的框架。
\item 免费开源
\end{itemize}
\item gradle日常使用方法
\label{sec:org561fe7d}

\begin{enumerate}
\item 解压 ZIP 文件，本案例解压于 
\begin{verbatim}
D:\usr\local
\end{verbatim}
\item 新建环境变量 GRADLE\_HOME，即
\begin{verbatim}
D:\usr\local\gradle-2.4；
\end{verbatim}
\item 修改环境变量 Path，即追加 
\begin{verbatim}
%GRADLE_HOME%\bin;
\end{verbatim}
\item 测试是否安装成功，输入快捷键 WIN+ R，输入 cmd，在弹出的窗口输入
命令行： 
\begin{verbatim}
gradle -v；
\end{verbatim}
\item 创建工程所在目录，本项目创建于
\begin{verbatim}
c:\gdemo；
\end{verbatim}

\item 创建空白的 build.gradle 文件，并打开；
\item 在第一行输入 apply plugin: ‘java’，(android studio 用户将java换成app)并执行命令:gradle build。
\end{enumerate}
\item gradle 版本号与Android-Studio gradle插件版本的对应关系
\label{sec:orge07ee3f}
\begin{enumerate}
\item Android studio gradle插件版本配置位置：
\lstset{language=java,label= ,caption= ,captionpos=b,numbers=none}
\begin{lstlisting}
buildscript {
    repositories {
    jcenter()
}
dependencies {
    classpath 'com.android.tools.build:gradle:2.3.3'
    // NOTE: Do not place your application dependencies here; they belong
    // in the individual module build.gradle files
}
}
\end{lstlisting}

\item gradle版本配置位置:
\lstset{language=shell,label= ,caption= ,captionpos=b,numbers=none}
\begin{lstlisting}
位于gradle/wrapper/gradle-wrapper.properties文件中
distributionUrl=http\://services.gradle.org/distributions/gradle-3.3-all.zip
\end{lstlisting}

\item 版本的对应关系:
\end{enumerate}
\begin{center}
\includegraphics[width=0.5\textwidth]{img/2020-10-06_15-46-20.jpg}
\end{center}
\end{enumerate}
\end{document}